1
並列の転換点:逐次論理からGPUスレッドへのマッピング
AI024Lesson 4
00:00

並列の転換点 は、計算上の哲学における根本的な転換を表しており、 時間的な順序(一つずつ順番に処理する) (一つずつ順番に処理する)から 空間的な分布(グリッド全体で同時にすべてを処理する) (グリッド全体で同時にすべてを処理する)へと移行する。

1. 独立性のヒューリスティクス

これはGPU計算における黄金法則です: 「あなたの問題が『N個の要素に対して何らかの操作を独立して適用する』場合、最初に試すべきマッピングです。」 このデータ並列アプローチは、スレッド管理のオーバーヘッドが巨大な同時処理能力に比べて無視できるほどであるため、GPU加速の手に入りやすい成果物です。

2. 精度とデータペイロード

HIPカーネルは通常、大規模なプリミティブ型の配列を扱います。高性能グラフィックスや機械学習では、一般的に float (単精度)を使用しますが、極めて高い数値安定性を必要とする科学的シミュレーションでは double (倍精度)を使用します。

CPU:時間的転換点GPU:空間的

3. イテレーションから占有へ

CPUコードでは、プロセッサがループを通じてデータに「訪問」します。GPUの論理では、データがスレッドに「占有」されます。あなたは どのようにループするか を書くのを止め、代わりに 特定の座標でのみ1つのワーカーがすべきことを書き始めます。

$$\text{インデックス } i = \text{blockIdx.x} \times \text{blockDim.x} + \text{threadIdx.x}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>